package com.pro.framework.api.file.storage;

import com.pro.framework.api.enums.IEnumStr;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 存储操作类型枚举
 */
@Schema(description = "存储操作类型")
@Getter
@AllArgsConstructor
public enum EnumStorageOperationType implements IEnumStr {

    PUT_OBJECT("上传对象"),
    GET_OBJECT("下载对象"),
    DELETE_OBJECT("删除单个对象"),
    DELETE_OBJECTS("批量删除对象"),
    GENERATE_PRESIGNED_UPLOAD("生成预签名上传URL"),
    GENERATE_PRESIGNED_DOWNLOAD("生成预签名下载URL"),
    INITIATE_MULTIPART_UPLOAD("初始化分片上传"),
    UPLOAD_PART("上传分片"),
    COMPLETE_MULTIPART_UPLOAD("完成分片上传"),
    ABORT_MULTIPART_UPLOAD("中止分片上传"),
    LIST_OBJECTS("列举对象"),
    GET_OBJECT_METADATA("获取对象元信息"),
    COPY_OBJECT("复制对象"),
    MOVE_OBJECT("移动对象"),
    CREATE_BUCKET("创建桶"),
    DELETE_BUCKET("删除桶"),
    DOES_BUCKET_EXIST("检查桶是否存在"),
    DOES_OBJECT_EXIST("检查对象是否存在"),
    ;

    private final String label;
}
